KEYBOARD: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ The OBM-128 supports the following normal characters: qwertyuiopasdfghjklzxcvbnm 1234567890 .,;:'()!%?-* Thes characters are used for typing, and are what are mainly stored in the lists. There are also special characters: QWERTYUIOPASDM Q-P are gradient characters, with Q being a solid block, and P being nearly gone. ASD are little emoticons, A is a smiley, S is a frown, and D is deadpan. M prints a small obm to the screen. These characters can not be accessed normally, and require the editing of lists or importing of data to be shown. You can use the enter key to create a new line. There is no backspace, as that is not a key that can be checked for inputs in scratch. Up arrows and down arrows can be used for switching lines, though unlike enter, they will not make the @realtext list longer, so using the down arrow to get to line 6 on a 5-line list will cause errors. Characters are added to the list quite slowly, with only one being able to be printed per second. This is due to some strange bottleneck with the Keyboard Controller freezing while adding data to the @realtext list. You should probably use turbo mode (shift-click flag) or turbowarp (you would need to unblock it), a website that compiles scratch code into faster JavaScript. DISPLAY: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ The display of the OBM-128 is broken into three parts: the main text area, the debug area, and the overlay area. The debug area is a lime green section near the bottom of the screen with white text, while the main text area is black with lime text. The debug area is 43 characters wide, and 1 character tall. The main text area is 43 characters wide, and 19 characters tall. In total, the screen can display 860 characters. For people who know scratch, you would know that there is a clone limit, which 860 exceeds. I am able to avoid the clone limit by using the pen stamp block and drawing text that way. The overlay area has the same resolution as the main text area. The dark lines that are across the screen are purely cosmetic and meant to represent the byproduct of a shadowmask, which were present in low resolution CRT displays, which were common when this computer would have been released. The debug area shows basic information that might be useful to the user. It shows if the script is running, the last result of a math function, and the user's current line. The main text area is where you type your scripts and where most things occur. The overlay area is where things printed using the oprnt command are sent to. BASIC PROGRAMMING: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ This section covers how programs are compiled and run. Scripts are run top to bottom, every time. (technically each command is run slightly off sync but it has not caused me any errors) You can slightly change the way they are run by using goto, but the compiler will continue to tick downwards. Within the Compiler, there are many blocks, each detecting its own dedicated keyword or command. The ADD block detects addition commands, the PRINT block detects print commands, etc. While the running variable (displayed in the green debug area at the bottom of the screen,) is set to 1, scripts will run from top to bottom forever, unless the ESC keyword is used at the bottom of the script. You can toggle if the script is running by typing RUN and enter, which will start the running cycle. By typing END, you can end the run cycle. END is used manually, while ESC can only be called from the script by the compiler. COMMANDS: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ MATH add x y ... adds number y to number x. Variations of this command are add xx y, add xxx y, add xxx yy, and add xxx yyy. Placing something like a space or any character at the end of the command will cause errors. The next three commands are nearly identical to this one. sub x y ... subtracts number y from number x. Variations of this command are sub xx y, sub xxx y, sub xxx yy, and sub xxx yyy. Placing something like a space or any character at the end of the command will cause errors. mul x y ... multiplies number x by number y. Variations of this command are mul xx y, mul xxx y, mul xxx yy, and mul xxx yyy. Placing something like a space or any character at the end of the command will cause errors. div x y ... divides number x by number y. Variations of this command are div xx y, div xxx y, div xxx yy, and div xxx yyy. Placing something like a space or any character at the end of the command will cause errors. DEBUGGING run ... run will set the running cycle to true. Run cannot be placed in a script multiple times without some silly stuff happening. end ... end will set the running cycle to false. Like run, end cannot be placed multiple times within a script. deb ... disables or enables debugging. When this is active, running a command will cause it to be replaced. Ex. add 4 5 will be replaced with equals 9. When it is disabled, the command will be replaced with a blank line. rep x ... replaces line x with a blank lines. rec ... toggles replacement mode. When it is active, running a command will automatically delete it. Ex. add 4 5 will become equals 9. When it is not active, commands will stick, and repeatedly run, which can be helpful or detremental. Rec is not run in order, and is run the moment that the compiler notices that it is in the @realtext list and it is not the line that the cursor is on. SAVE/LOAD save 1-3 ... saves the current values of @realtext to disks 1 to 3. This will completely overwrite any data currently within those disks. load 1-3 ... loads the current values of disks 1-3 on to @realtext. Similar to save, it will completely overwrite any data. GRAPHICAL print x string ... prints a string at line x. You can print anything you want, but be warned, longer things will be cut out. Trying to print to a line that doesn't exist yet will cause errors. Ex. print 10 yow in a 5 line list. You can only print up to line 99, any farther than that and it will only print at the first two chatacters of the integer. Example, print 4567 hi will print "7 hi" to line 45. Placing "*" at the first character will cause the compiler to check for variables. Ex, print 5 *1 will print the value of variable 1 to line 5. oprnt x string ... stands for Overlay Print. It will print a string at line x, but x can only be from 1-19. Text on this layer is drawn on top of normal @realtext text in a blue color instead of a lime color. Every frame, the overlay print list is cleared, so this command is mainly used for making animations. This command has all the same functions as print, and more. Oprnt can take a variable as its line to print to using the * as it. Ex. if vr1 equaled 10, oprnt *1 hello will print hello to the overlay on line 10. bri x ... stands for brightness. Bri sets the text brightness of the main text layer, from 0-9. 0 is solid black, 9 is white, and 4-5 is the normal color. LOGICAL vr1-4 x ... sets variable (vr) 1 to 4 to a value from 0-999. Ex. vr1 5 and then running add vr1 0 will output 5. There are only 4 variables, and they cannot be renamed. inc vr1-4 x ... increments variable 1-4 by x, which can range from 1-9. You can technically put something like "inc vr1 89", but that would only increment it by 8. dec vr1-4 x ... the same as inc, except it reduces the value of the variable. gr vr1-4 x n/i/d n/i/d/p ... checks if variable 1-4 is greater than x. X can be from -9 to 99. If it is, n/i/d can be called. N means null, and will do nothing. I will increment the variable by 1, and d will decrement it by one. If it is false, n/i/d/p can be called. P stands for print. Unlike the normal print command, you cannot choose which line it will be printed to, nor do you put a space after it. It will be directly printed to the same line as the gr command is at. This does mean that debugging mode must be disabled for the command to be printed properly. For example, if "gr vr1 5 n puh oh" returned false, then "uh oh" would be printed to the line that the original command was on. ls vr1-4 x n/i/d n/i/d/p ... this command is the same as gr, except it checks if vr1-4 is less than x. eq vr1-4 x n/i/d n/i/d/p ... same as the previous two, except checking if vr1-4 is equal to x. INPUT key x 1-4 i/n/d ... detects if key x is pressed and will then increment, do nothing, or decrement variable 1-4. Ex. the script "key a 1 i" will change variable 1 by one when key a is pressed. The detection for this is quite slow, so beware.